14272
16586
Jeg har et array-statsnavn som
æble
x
banan
Y
Kiwi
z
Jeg har brug for at lægge æble, banan og kiwi i en række Frugter og X, Y og Z i en række kaldet alfabeter.
Enhver simpel C # -mekanisme til det tak? 
Brug IEnumerable . Hvor overbelastning, der leverer indekset.
var frugter = statsnavn. Hvor ((s, i) => i% 2 == 0). ToArray ();
var alfabeter = statsnavn. hvor ((s, i) => i% 2! = 0). ToArray ();
|
Stjålet fra Sådan får du alternative elementer ved hjælp af Enumerable in C #
var frugter = myArray.Where ((t, i) => i% 2 == 0). ToArray ();
var alfabeter = myArray.Where ((t, i) => i% 2 == 1). ToArray ();
|
Hvis jeg har forstået, stiller du spørgsmålstegn ved, hvad du vil, er meget simpelt:
Du vil lægge frugter i en række frugter og det samme for alfabeter, og de vises alternativt i array-statsnavn så:
for (int i = 0, j = 0; i  liste = ny liste  () {"æble", "X", "banan", "Y", "Kiwi", "z"};
var result = list.Vælg ((l, i) => ny {l, i})
.GroupBy (p => p.i% 2)
.Vælg (x => x.Vælg (v => v.l) .ToList ())
.ToList ();
Så har du en liste over lister:
|
liste  frugter = ny liste  ();
liste  alfabet = ny liste  ();
for (int i = 0; i  everyOther  (IEnumerable  collection)
{
ved hjælp af (var e = collection.GetEnumerator ()) {
mens (e.MoveNext ()) {
afkast afkast e.Current;
e.MoveNext (); // spring en over
}
}
}
Du kan bruge System.Linq.Skip til at springe det første element over.
streng [] ord = "æble X banan Y Kiwi z" .Split ();
var frugter = hver anden (ord);
var alfabeter = hver anden (ord.Skip (1));
Brug dem bare som en ny samling eller ring .ToArray () eller .ToList () på dem:
foreach (snor f i frugter)
Console.WriteLine (f);
streng [] anArray = fruits.ToArray (); // ved hjælp af System.Linq
Nu har du det, du har brug for.
Iteratorer er metoder, der giver afkast, se Iteratorer (C # Programmeringsvejledning). Dette er et meget stærkt træk ved sproget. Du kan:
spring elementer over
dekorere elementer
skift rækkefølge
sammenkædede sekvenser (se System.Linq.Concat)
...
|
Her er nogle arbejdskoder, forhåbentlig vil dette være nyttigt for dig:
ved hjælp af System;
ved hjælp af System.Collections.Generic;
ved hjælp af System.IO;
ved hjælp af System.Linq;
ved hjælp af System.Text;
ved hjælp af System.Threading.Tasks;
navneområde ReadFile
{
klasse Program
{
statisk ugyldigt ReadFile (strengfilPath, List  custumerNames, List  phoneNumbers)
{
strengelinje = streng. tom;
var fileStream = ny StreamReader (filePath);
bool isPhoneNumber = sandt;
mens ((line = fileStream.ReadLine ())! = null)
{
hvis (isPhoneNumber)
{
phoneNumbers.Add (Convert.ToInt32 (line));
isPhoneNumber = false;
}
andet
{
custumerNames.Add (linje);
isPhoneNumber = sandt;
}
}
fileStream.Close ();
}
statisk ugyldigt Main (streng [] args)
{
Console.WriteLine ("Begyndte at læse filen ...");
Liste  custumersNamesList = ny liste  ();
Liste  custumersPhonesNumbers = ny liste  ();
ReadFile ("SampleFile.txt", custumersNamesList, custumersPhonesNumbers);
// Under forudsætning af at begge har samme længde.
for (int i = 0; i